<?php
namespace Common\Util;
/**
 * @author dece(2018-3-27)
 */
class Dece_num {
	/**
	 * 生成订单号
	 * 需要配合下面的数据库使用
	 * 生成的订单号前14位为时间，后面11位为自增数
	 * @access public
	 * @param 
	 * @return string $order_num (25位订单编号)
	 */
	public function create_order_num(){
		// 当前时间 (14位)
		$now_time = date('YmdHis', time());
		// 日期
		$theday = date('Y-m-d', time());
		// 开启事务机制
		M()->startTrans();
		// 实例化
		$tab = M('num');
		// 查询今天的数据
		$this_day = $tab->where(array('id'=>1))->find();
		// 判断今天的数据是否为空
		if(empty($this_day)){
			// 保存一条数据
			$add_num = $tab->add(array('id'=>1,'val'=>1,'theday'=>$theday));
			// 是否生成数据
			if($add_num){
				// 提交事务
				M()->commit();
				// 订单编号(25位) (str_pad将字符串填充到某个长度 STR_PAD_LEFT 左填充)
				$order_num = $now_time.str_pad('1', 11, '0', STR_PAD_LEFT);
				return $order_num;
			}else{
				// 事务回滚
				M()->rollback();
				return false;
			}
		}else{
			// 是否为今天的自增id
			if($this_day['theday'] == $theday){
				// 当前自增id
				$now_num = intval($this_day['val'] + 1);
				// 保存
				$save_num = $tab->where(array('id'=>1))->save(array('val'=>$now_num));
				// 是否保存成功
				if($save_num){
					// 提交事务
					M()->commit();
					// 订单编号(25位) (str_pad将字符串填充到某个长度 STR_PAD_LEFT 左填充)
					$order_num = $now_time.str_pad($now_num, 11, '0', STR_PAD_LEFT);
					return $order_num;
				}else{
					// 事务回滚
					M()->rollback();
					return false;
				}
			}else{
				// 保存
				$save_num = $tab->where(array('id'=>1))->save(array('val'=>1, 'theday'=>$theday));
				// 是否保存成功
				if($save_num){
					// 提交事务
					M()->commit();
					// 订单编号(25位) (str_pad将字符串填充到某个长度 STR_PAD_LEFT 左填充)
					$order_num = $now_time.str_pad('1', 11, '0', STR_PAD_LEFT);
					return $order_num;
				}else{
					// 事务回滚
					M()->rollback();
					return false;
				}
			}
		}
		// 结束
		// 数据库开始
		// SET FOREIGN_KEY_CHECKS=0;

		// -- ----------------------------
		// -- Table structure for de_num
		// -- ----------------------------
		// DROP TABLE IF EXISTS `de_num`;
		// CREATE TABLE `de_num` (
		//   `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id(备用)',
		//   `val` int(11) unsigned NOT NULL COMMENT '值',
		//   `theday` date NOT NULL COMMENT '今天的日期',
		//   `edittime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
		//   PRIMARY KEY (`id`)
		// ) ENGINE=InnoDB DEFAULT CHARSET=utf8;		
		// 数据库结束
	}

}
